package view;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JLabel;

import java.awt.Rectangle;
import java.awt.Choice;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;

import javax.swing.JButton;

import mensagens.MensagemAtualizarPartida;
import mensagens.MensagemIniciarJogo;

import threads.CarregarInformacoesParticipantes;


import controller.ControladorServidor;

public class DialogPreparacao extends JDialog {

	private static final long serialVersionUID = 1L;
	private ControladorServidor controladorServidor = null;
	CarregarInformacoesParticipantes informacoes = null;
	private JPanel jContentPane = null;
	private ArrayList<JLabel> labelJogadores = null;  //  @jve:decl-index=0:
	private ArrayList<Choice> choiceJogadores = null;  //  @jve:decl-index=0:
	private JLabel jogador1_l = null;
	private JLabel jogador2_l = null;
	private JLabel jogador3_l = null;
	private JLabel jogador4_l = null;
	private JLabel jogador5_l = null;
	private JLabel jogador6_l = null;
	private Choice cor1_choice = null;
	private Choice cor2_choice = null;
	private Choice cor3_choice = null;
	private Choice cor4_choice = null;
	private Choice cor5_choice = null;
	private Choice cor6_choice = null;
	private JButton ok_b = null;
	
	/**
	 * @param owner
	 */
	public DialogPreparacao(ControladorServidor controlador) {
		super();
		initialize();
		controladorServidor = controlador;
		informacoes = new CarregarInformacoesParticipantes(controladorServidor,labelJogadores,choiceJogadores, ok_b);
		informacoes.start();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(414, 272);
		this.setTitle("Preparando...");
		this.setContentPane(getJContentPane());
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				fecharPreparacao();
			}
		});
		this.choiceJogadores = new ArrayList<Choice>();
		choiceJogadores.add(cor1_choice);
		choiceJogadores.add(cor2_choice);
		choiceJogadores.add(cor3_choice);
		choiceJogadores.add(cor4_choice);
		choiceJogadores.add(cor5_choice);
		choiceJogadores.add(cor6_choice);
		this.labelJogadores = new ArrayList<JLabel>();
		labelJogadores.add(jogador1_l);
		labelJogadores.add(jogador2_l);
		labelJogadores.add(jogador3_l);
		labelJogadores.add(jogador4_l);
		labelJogadores.add(jogador5_l);
		labelJogadores.add(jogador6_l);
	}
	
	private void fecharPreparacao(){
		if(informacoes != null){
			informacoes.setTeste(false);
		}
		System.exit(0);
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jogador6_l = new JLabel();
			jogador6_l.setBounds(new Rectangle(27, 200, 105, 16));
			jogador6_l.setText("Jogador 6");
			jogador5_l = new JLabel();
			jogador5_l.setBounds(new Rectangle(27, 164, 105, 16));
			jogador5_l.setText("Jogador 5");
			jogador4_l = new JLabel();
			jogador4_l.setBounds(new Rectangle(27, 128, 105, 16));
			jogador4_l.setText("Jogador 4");
			jogador3_l = new JLabel();
			jogador3_l.setBounds(new Rectangle(27, 92, 105, 16));
			jogador3_l.setText("Jogador 3");
			jogador2_l = new JLabel();
			jogador2_l.setBounds(new Rectangle(27, 56, 105, 16));
			jogador2_l.setText("Jogador 2");
			jogador1_l = new JLabel();
			jogador1_l.setBounds(new Rectangle(27, 20, 105, 16));
			jogador1_l.setText("Jogador 1");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(jogador1_l, null);
			jContentPane.add(jogador2_l, null);
			jContentPane.add(jogador3_l, null);
			jContentPane.add(jogador4_l, null);
			jContentPane.add(jogador5_l, null);
			jContentPane.add(jogador6_l, null);
			jContentPane.add(getCor1_choice(), null);
			jContentPane.add(getCor2_choice(), null);
			jContentPane.add(getCor3_choice(), null);
			jContentPane.add(getCor4_choice(), null);
			jContentPane.add(getCor5_choice(), null);
			jContentPane.add(getCor6_choice(), null);
			jContentPane.add(getOk_b(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes cor1_choice	
	 * 	
	 * @return java.awt.Choice	
	 */
	private Choice getCor1_choice() {
		if (cor1_choice == null) {
			cor1_choice = new Choice();
			cor1_choice.setBounds(new Rectangle(148, 15, 126, 16));
			cor1_choice.setEnabled(false);
		}
		return cor1_choice;
	}

	/**
	 * This method initializes cor2_choice	
	 * 	
	 * @return java.awt.Choice	
	 */
	private Choice getCor2_choice() {
		if (cor2_choice == null) {
			cor2_choice = new Choice();
			cor2_choice.setBounds(new Rectangle(148, 51, 126, 16));
			cor2_choice.setEnabled(false);
		}
		return cor2_choice;
	}

	/**
	 * This method initializes cor3_choice	
	 * 	
	 * @return java.awt.Choice	
	 */
	private Choice getCor3_choice() {
		if (cor3_choice == null) {
			cor3_choice = new Choice();
			cor3_choice.setBounds(new Rectangle(148, 87, 126, 16));
			cor3_choice.setEnabled(false);
		}
		return cor3_choice;
	}

	/**
	 * This method initializes cor4_choice	
	 * 	
	 * @return java.awt.Choice	
	 */
	private Choice getCor4_choice() {
		if (cor4_choice == null) {
			cor4_choice = new Choice();
			cor4_choice.setBounds(new Rectangle(148, 123, 126, 16));
			cor4_choice.setEnabled(false);
		}
		return cor4_choice;
	}

	/**
	 * This method initializes cor5_choice	
	 * 	
	 * @return java.awt.Choice	
	 */
	private Choice getCor5_choice() {
		if (cor5_choice == null) {
			cor5_choice = new Choice();
			cor5_choice.setBounds(new Rectangle(148, 159, 126, 16));
			cor5_choice.setEnabled(false);
		}
		return cor5_choice;
	}

	/**
	 * This method initializes cor6_choice	
	 * 	
	 * @return java.awt.Choice	
	 */
	private Choice getCor6_choice() {
		if (cor6_choice == null) {
			cor6_choice = new Choice();
			cor6_choice.setBounds(new Rectangle(148, 195, 126, 16));
			cor6_choice.setEnabled(false);
		}
		return cor6_choice;
	}

	/**
	 * This method initializes ok_b	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getOk_b() {
		if (ok_b == null) {
			ok_b = new JButton();
			ok_b.setBounds(new Rectangle(310, 92, 66, 35));
			ok_b.setText("OK");
			ok_b.setEnabled(false);
			ok_b.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					iniciarJogo();
				}
			});
		}
		return ok_b;
	}
	
	private void iniciarJogo(){
		DialogJogo dialogJogo = new DialogJogo(controladorServidor);
		controladorServidor.setDialogJogo(dialogJogo);
		dialogJogo.setVisible(true);
		try {
			controladorServidor.enviarMensagemParaTodos(new MensagemAtualizarPartida(controladorServidor.getPartida()));
			controladorServidor.enviarMensagemParaTodos(new MensagemIniciarJogo());
		} catch (UnknownHostException e) {
			JOptionPane.showMessageDialog(this, e.getMessage());
		} catch (IOException e) {
			JOptionPane.showMessageDialog(this, e.getMessage());
		}
		
		this.dispose();
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
